import store from '@/store';

//	工具对象
const util = {

	//	判断是否在微信中  
	isWechat: function() {
		var ua = window.navigator.userAgent.toLowerCase();
		if (ua.match(/micromessenger/i) == 'micromessenger') {
			return true;
		} else {
			return false;
		}
	},

	//	get参数拼接url
	setUrl(url, data) {
		return url += (url.indexOf('?') < 0 ? '?' : '') + util.setParam(data);
	},

	//	get参数拼接
	setParam(data) {
		let url = '';
		for (var k in data) {
			let value = data[k] !== undefined ? data[k] : '';
			url += `&${k}=${value}`
		}
		return url ? url.substring(1) : ''
	},

	//	弹窗
	alert(obj) {

		//	使用promise写请求,一个函数两种回调
		return new Promise((resolve, reject) => {

			//	这个地方说白了就是 如果只是想提示一句话一个文本的话 就只是弹个小tips
			if (typeof obj == "string" || typeof obj == "number") {
				uni.showToast({
					'title': "" + obj + "",
					'icon': 'none',
					duration: 3000,
				});
				return;
			}

			//	标题
			obj.title = obj.title ? obj.title : "系统提示";

			//	提示内容
			obj.value = obj.value ? obj.value : "提示信息";

			//	跳转页面
			obj.url = obj.url ? obj.url : "";

			//	确定文本
			obj.confirmText = obj.confirmText ? obj.confirmText : "确定";

			//	取消按钮
			obj.cancel = obj.cancel === false ? false : true;

			//	是否关闭当前页面
			obj.close = obj.close ? obj.close : false;

			//	取消文本
			obj.cancelText = obj.cancelText ? obj.cancelText : "取消";

			//	调起
			uni.showModal({
				title: obj.title,
				content: obj.value,
				confirmText: obj.confirmText,
				showCancel: obj.cancel,
				cancelText: obj.cancelText,
				success: function(res) {
					obj.success ? obj.success(res) : function() {};
					resolve(res);
				}
			});

		})

	},

	//	上传文件
	upload(obj) {

		//	使用promise写请求,一个函数两种回调
		return new Promise((resolve, reject) => {

			//	接口地址
			obj.url = obj.url ? obj.url : "/api/uploadFile";

			//	文件
			obj.file = obj.file ? obj.file : "";

			//	其他数据
			obj.data = obj.data ? obj.data : {};

			uni.showLoading({
				title: "正在上传",
			})

			//	上传
			uni.uploadFile({
				url: Host + obj.url,
				filePath: obj.file,
				name: 'file',
				formData: obj.data,
				dataType: 'json',
				success(res) {

					uni.hideLoading()

					//	成功
					obj.success ? obj.success(JSON.parse(res.data)) : function() {};

					//	
					resolve(JSON.parse(res.data));

				},
				fail(res) {

					uni.hideLoading()
					//	错误
					obj.fail ? obj.fail(res.data) : function() {};

					return res;
				}
			});

		})
	},

	//	get参数拼接
	getParam(data) {
		let url = '';
		for (var k in data) {
			let value = data[k] !== undefined ? data[k] : '';
			url += `&${k}=${value}`
		}
		return url ? url.substring(1) : ''
	},

	//	get参数拼接url
	getUrl(url, data) {
		return url += (url.indexOf('?') < 0 ? '?' : '') + this.getParam(data);
	},

	//	获取当前浏览器标识
	aliOrWechat() {
		if (/MicroMessenger/.test(window.navigator.userAgent)) {
			return "wechat";
		} else if (/AlipayClient/.test(window.navigator.userAgent)) {
			return "alipay";
		} else {
			return "other";
		}
	},


	//	微信公众号授权登录
	wechatLogin() {


		uni.showLoading({
			title: "微信授权",
		})

		//	公众号appid
		let appid = store.state.system.appid;

		//	获取当前网址与页面路径组合
		var url = location.origin + location.pathname;

		console.log("util", url);

		//
		var curParam = util.GetQuery(location.href);

		//	移除参数中的code值和state  这也就意味着开发微信公众号时,页面间传值参数不能包含state和code.
		delete(curParam.code);
		delete(curParam.state);

		let uri = util.setUrl(url, curParam);

		console.log("util", uri);

		//	这里务必编码
		uri = encodeURIComponent(uri);

		//	授权类型
		// let scope = 'snsapi_userinfo';
		//	静默授权只能拿到openid,如果需要静默授权就只要这个就行
		let scope = 'snsapi_base';

		var httpUrl =
			`https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${uri}&response_type=code&scope=${scope}&state=123#wechat_redirect`;

		window.location.href = httpUrl;

	},

	//	微信注入jssdk 这个是为了开发公众号的时候才用,没事儿别瞎鸡儿用. 主要功能就是使用微信公众号所有功能 比如自定义分享,录音等等
	wechatConfig() {

		return util.request({
				url: "/addons/third/api/getWechatConfig",
			})
			.then((res) => {

				//	配置微信Config
				jweixin.config({
					debug: false,
					appId: res.data.appid,
					timestamp: res.data.timestamp,
					nonceStr: res.data.nonceStr,
					signature: res.data.signature,
					jsApiList: [
						'checkJsApi',
						'onMenuShareTimeline',
						'onMenuShareAppMessage',
						'getLocation'
					]
				});

				jweixin.ready(function() {
					resolve(true);
				})
			});

	},

	//
	codeLoop: (obj) => {

		// 定义计时器
		var code = 60;
		// 设置定时器
		var timer = setInterval(() => {
			// 判断code是否等于0
			if (code == 0) {
				// 赋值文字是否等于验证码
				obj.code = '获取验证码';
				// 清除定时器
				clearInterval(timer);
			} else {
				// code自减
				code--;
				// 赋值文字
				obj.code = code + '秒后获取';
			};
		}, 1000);

	},

}

export default util;